<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="app">
        <button @click="comName='mycom1'">显示mycom1</button>
        <button  @click="comName='mycom2'">显示mycom2</button>

        <!-- commponent是vue中动态组件：它是一个容器，自已是没有内容，你可以在其中放入任意的组件 
        它有一个属性名：is ,值是一个字符串，就是当前注册的组件的名字

        keep-alive： 用来对组件进行缓存。
        缓存之后：
          1. 组件的切换就不会再去执行销毁和创建了。只需创建一次。
          2. 组件多出两个钩子函数：
             activated和deactivated,分别表示组件处于激活和失活状态
        
        主要应用场景，有两个：
        （1）里面放动态组件
            <keep-alive>
                <component :is="comName"></component>
            </keep-alive>
        （2）里面放路由出口
            <keep-alive>
                <router-view></router-view>
            </keep-alive>
        -->
        <keep-alive>
            <component :is="comName"></component>
        </keep-alive>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        var vm = new Vue({
            el: '#app',
            components: {
                mycom1: {
                    template: `<div> 子组件MyCom1 {{d}}</div>`,
                    data(){return {d: Date.now()}},
                    activated(){
                        console.log('com1处于激活状态')
                    },
                    deactivated () {
                        console.log('com1处于失活状态')
                    },
                    created() {
                        console.log('com1:创建')
                    },
                    destroyed() {
                        console.log('com1: destory')
                    }
                },
                mycom2: {
                    template: `<div> 子组件MyCom2</div>`,
                    created() {
                        console.log('com2:创建')
                    },
                    destroyed() {
                        console.log('com2: destory')
                    },
                    activated(){
                        console.log('com2处于激活状态')
                    },
                    deactivated () {
                        console.log('com2处于失活状态')
                    },
                },
            },
            data: {
                comName: 'mycom1'
            }
        })
    </script>
</body>

</html>